/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.util;
/**
 * @author Administrador.
 */
public class UtilTransaccion {
    
    static String unidades[] = {"","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","quince"};
    static String decenas[] = {"","diez","veint","treinta","cuarenta","cincuenta","sesenta","setenta","ochenta","noventa"};
    static String centenas[] = {"","cien","doscientos","trescientos","cuatrocientos","quinientos","seiscientos","setecientos","ochocientos","novecientos"};

    public static String getFormatoLiteral(double numero) {
        double dollars = Math.floor(numero);
        double monto =  Math.floor(numero);
        int cents = (int)Math.round((numero*100 - dollars*100));
        double thousands = (dollars - dollars % 1000) / 1000;
        dollars -= thousands * 1000;
        String output = "";
        if ( monto >= 1000 ) {
            if ( monto < 2000 ) {
                output += "mil ";
            } else {
                output += num(thousands) + " mil ";
            }
        }
        output += dollars > 0 ? num(dollars) + "   " : "";
        output += ((cents<10)? "0"+cents : cents)  +"/100";
        return output.substring(0,1).toUpperCase() + output.substring(1);
    }

    public static String num(double k){
	int j = (int) ( (k - k % 100) / 100);
	int i = (int) (k - j * 100);
	String cen = "";
	if ( j>0 ) {
            cen = centenas[j];
            cen += (j == 1 && i!=0) ? "to" : "";
            cen += (i > 0) ? " " : "";
	}
	if (i<16) return cen + unidades[i];
	int tens =(int) ((i - i % 10) / 10);
	int units = (int) (i - (i - i % 10));
	if ( tens == 2 ) {
            return cen + decenas[tens] + ((units > 0) ? "i" : "e") + unidades[units];
	}else{
            return cen + decenas[tens] + ((tens > 0 && units > 0) ? " y " : "") + unidades[units];
	}
    }
    
    public static double redondeo(double num, double exp ) {
        double base = java.lang.Math.pow( 10, exp);
        double aux = num * base;
        return (double) Math.round(aux) / base;
    }
  
    public static String redondear(double num, double exp ) {
        double monto = redondeo(num, exp);
        String costo = "" + monto;
        String entero = "";
        String decimal = "00";
        int pos = costo.indexOf(".");
        if ( pos > 0) {
            entero = costo.substring(0,pos);
            decimal = costo.substring(pos+1)+"00";
            decimal = decimal.substring(0,2);
        } else {
            entero = costo;
        }
        String valor = entero + "." + decimal;
        return valor;
    }
    
    // dos metodos para generar codigos de matricula
    public static String generarCodigo(){
        String convetirMayus = "";
        int random = 0;
        int cantidad = 8;
        for(int i = 1; i <= cantidad; i++){
            int grupo = (int)Math.floor((Math.random() * 3) + 1);
            if(grupo == 1)
                random = (int)Math.floor((Math.random() * 26) + 65);
            if(grupo == 2)
                random = (int)Math.floor((Math.random() * 10) + 48);
            if(grupo == 3)
                random = (int)Math.floor((Math.random() * 26) + 97);
            convetirMayus += fromCharCode(random);
            
        }
        return convetirMayus.toUpperCase();
    }
    public static String fromCharCode(int... codePoints) {
        return new String(codePoints, 0, codePoints.length);
    }
}
